package com.aistar.baidu_ocr;

import com.aistar.util.ocr.Base64Util;
import com.aistar.util.ocr.HttpUtil;
import com.alibaba.fastjson.JSONObject;


import java.net.URLEncoder;

public class IdCard {
    public static String idCard(byte[] imgData) {
        // 请求url
        String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard";
        try {
            //将字节数组转化为二进制字符串
            String imgStr = Base64Util.encode(imgData);
            //使用UTF-8编码机制将字符串转换为 application/x-www-form-urlencoded 格式
            String imgParam = URLEncoder.encode(imgStr, "UTF-8");

            String param = "id_card_side=" + "front" + "&image=" + imgParam;

            // 注意这里仅为了简化编码每一次请求都去获取access_token，线上环境access_token有过期时间， 客户端可自行缓存，过期后重新获取。
            String accessToken = AuthService.getAuth();

            String result = HttpUtil.post(url, accessToken, param);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    public static String getInfoFromIdCard(byte[] idCard){
        String idCardStr = idCard(idCard);
        JSONObject jsonObject = JSONObject.parseObject(idCardStr);
        String imageStatus = jsonObject.getString("image_status");
        if ("normal".equals(imageStatus))
            return idCardStr;
        if ("reversed_side".equals(imageStatus))
            return "身份证正反面颠倒";
        if ("non_idcard".equals(imageStatus))
            return "上传的图片中不包含身份证";
        if ("blurred".equals(imageStatus))
            return "身份证模糊";
        if ("other_type_card".equals(imageStatus))
            return "其他类型证照";
        if ("over_exposure".equals(imageStatus))
            return "身份证关键字段反光或过曝";
        if ("over_dark".equals(imageStatus))
            return "身份证欠曝（亮度过低）";
        if ("unknown".equals(imageStatus))
            return "未知状态";

        return null;
    }


}
